#ifndef _KLAS_FONT_NODE_HPP_
#define _KLAS_FONT_NODE_HPP_

#include "../include/Node.hpp"
#include "../include/Color.hpp"
#include "../include/external/GLFT_Font.hpp"
#include <string>
using namespace std;

namespace klas
{
	//! The font node represents any font seen in the world.
	/*! It can be rotated and scaled like any other object. */
	class FontNode : public Node
	{
		public:
			
			//! Ctor.
			FontNode();
			
			//! Ctor.
			/*! \font The font object to use for this FontNode. */
      FontNode(DataObject* font);
			
			//! Ctor.
			/*! \param font The font object to use for this FontNode.
					\param text The FontNode's text. */
      FontNode(DataObject* font, string text);
	
			//! Dtor.
			virtual ~FontNode();
			
			//! Sets the font of the FontNode.
			/*! \param font The font object to use for this FontNode. */
      void setFont(DataObject* font);
			
			//! Changes the text of this FontNode.
			/*! \param text The text to use for this node. */
			void setText(string text);
			
			//! Gets the text of this FontNode.
			/*! \return The text of this node. */
			string getText() const;
			
			//! Gets a deep copy of the node.
			/*! \return A deep copy of the node.  You have to call delete on the new node. */
			virtual FontNode* getDeepCopy();

      //! Gets what type of this node is.  IE: Texture, Primitive, etc.
      /*! \return The type of the node. */
      virtual iReal getNodeType() const;
			
			//! Renders the node.
			virtual void render(const Rectangle<Real>& camera);

			
		private:
			
			//! Our font object
			Font* m_font;
			
			//! The text we render
			string m_text;

  };
}
#endif
